/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import com.beans.Projets;
import com.beans.Users;

import com.metier.ProjetMetier;

/**
 * 
 * @author Mamadou
 */

/**
 * 
 * @author Mamadou
 */
public class PanelAcceilProjets extends javax.swing.JPanel {

	private javax.swing.JButton boutonAjouter;
	private javax.swing.JButton boutonImprimer;
	private javax.swing.JButton boutonModifier;
	//private javax.swing.JButton boutonRechercher;
	private javax.swing.JButton boutonSupprimer;
	private javax.swing.JLabel jLabel1, textLabel;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JPanel panelBoutons, panelBouton1;
	private javax.swing.JPanel panelbas;
	private javax.swing.JPanel panelhaut;
	private JTextField textRechercher;
	private JLabel labelDateDebut, labelDateFin;
	private com.toedter.calendar.JDateChooser dateDebutProjet;
	private com.toedter.calendar.JDateChooser dateFinProjet;
	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	DefaultTableModel dtm;
	ProjetMetier projetMetier;
	private JTable tableListeProjets, tableListeProjetsByDate;
	private JButton boutonAnnulers;
	private JButton buttonAnnulers;

	// End of variables declaration//GEN-END:variables

	public PanelAcceilProjets(JButton b) {
		projetMetier = new ProjetMetier();

		initComponents(b);
	}

	public void initComponents(final JButton boutonRechercher) {

		panelhaut = new javax.swing.JPanel();
		jLabel1 = new javax.swing.JLabel();
		panelbas = new javax.swing.JPanel();
		panelbas.setLayout(new GridLayout(1, 1));
		panelBoutons = new javax.swing.JPanel();
		panelBouton1 = new JPanel();
		labelDateDebut = new JLabel("DATE DEBUT");
		labelDateDebut.setBackground(new java.awt.Color(255, 255, 255));
		labelDateFin = new JLabel("DATE FIN");
		labelDateFin.setBackground(new java.awt.Color(255, 255, 255));

		boutonAjouter = new javax.swing.JButton();
		boutonSupprimer = new javax.swing.JButton();
		boutonModifier = new javax.swing.JButton();
		boutonImprimer = new javax.swing.JButton();
		//boutonRechercher = new javax.swing.JButton();
		jLabel2 = new javax.swing.JLabel();
		textLabel = new JLabel("");
		textRechercher = new JTextField();
		dateDebutProjet = new com.toedter.calendar.JDateChooser();
		dateFinProjet = new com.toedter.calendar.JDateChooser();
		
		labelDateDebut.setFont(new java.awt.Font("Verdana", 3, 12));
		labelDateFin.setFont(new java.awt.Font("Verdana", 3, 12));
		labelDateDebut.setForeground(new java.awt.Color(255, 255, 255));
		labelDateFin.setForeground(new java.awt.Color(255, 255, 255));
		boutonAnnulers = new JButton("ANNULER");
		boutonAnnulers.setFont(new java.awt.Font("Verdana", 3, 14));
		buttonAnnulers = new JButton("ANNULER");
		buttonAnnulers.setFont(new java.awt.Font("Verdana", 3, 14));

		setBackground(new java.awt.Color(128, 130, 133));
		setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1,
				new java.awt.Color(102, 153, 255)));
		setFont(new java.awt.Font("Verdana", 3, 14)); // NOI18N
		setMaximumSize(new java.awt.Dimension(1050, 550));
		setMinimumSize(new java.awt.Dimension(1050, 550));
		setLayout(new java.awt.BorderLayout());
		panelBoutons.setLayout(new BorderLayout());
		panelBoutons.setBackground(new java.awt.Color(128, 130, 133));
		panelBouton1.setBackground(new java.awt.Color(128, 130, 133));

		panelhaut.setBackground(new java.awt.Color(128, 130, 133));
		panelhaut.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1,
				1, 1, new java.awt.Color(103, 153, 255)));
		panelhaut.setPreferredSize(new java.awt.Dimension(1050, 75));

		jLabel1.setIcon(new javax.swing.ImageIcon("src/main/java/com/photos/Gestion des PROJETS.jpg")); // NOI18N

		panelbas.setBackground(new java.awt.Color(128, 130, 133));
		panelbas.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1,
				1, new java.awt.Color(102, 153, 255)));
		panelbas.setMaximumSize(new java.awt.Dimension(1050, 375));
		panelbas.setMinimumSize(new java.awt.Dimension(1050, 375));
		panelbas.setPreferredSize(new java.awt.Dimension(1056, 410));

		// panelBoutons.setPreferredSize(new java.awt.Dimension(742, 35));
		panelBoutons.setBorder(javax.swing.BorderFactory.createMatteBorder(1,
				1, 1, 1, new java.awt.Color(103, 153, 255)));
		panelBoutons.setMaximumSize(new java.awt.Dimension(1050, 50));
		panelBoutons.setMinimumSize(new java.awt.Dimension(1050, 50));
		panelBoutons.setPreferredSize(new java.awt.Dimension(1050, 40));

		boutonAjouter.setIcon(new javax.swing.ImageIcon("src/main/java/com/photos/add16.png")); // NOI18N
		boutonAjouter.setToolTipText("Ajouter");
		boutonAjouter.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				// TODO Auto-generated method stub
				panelbas.removeAll();
				jLabel2.setVisible(false);
				boutonImprimer.setVisible(false);

				boutonModifier.setVisible(false);

				boutonRechercher.setVisible(false);

				boutonSupprimer.setVisible(false);
				boutonAjouter.setVisible(false);
				labelDateDebut.setVisible(false);
				labelDateFin.setVisible(false);
				dateDebutProjet.setVisible(false);
				dateFinProjet.setVisible(false);
				textRechercher.setVisible(false);

				AjouterProjets panAjoutProjet = new AjouterProjets(boutonAnnulers);
				panelbas.add(panAjoutProjet, BorderLayout.SOUTH);
				validate();

			}
		});
		boutonModifier.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				chargeProjetSelection();

			}
		});
		boutonSupprimer.setIcon(new javax.swing.ImageIcon("src/main/java/com/photos/supprimer.gif")); // NOI18N
		boutonSupprimer.setToolTipText("Supprimer");
		boutonSupprimer.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				final int[] selectionSupprimer = getTableListeProjets()
						.getSelectedRows();

				if (selectionSupprimer.length == 0) {
					JOptionPane.showMessageDialog(null,
							"veuillez selectionner un projet d'abord!!!!");
				} else {
					if (JOptionPane.showConfirmDialog(getFrame(),
							"Voulez-vous vraiment supprimer ?", "Information",
							JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
						testDeleteProjet();

					}

				}
			}
		});
		boutonAnnulers.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				// jLabel2.setVisible(true);
				panelbas.removeAll();
				boutonImprimer.setVisible(true);

				boutonModifier.setVisible(true);

				boutonRechercher.setVisible(true);

				boutonSupprimer.setVisible(true);
				boutonAjouter.setVisible(true);
				labelDateDebut.setVisible(true);
				labelDateFin.setVisible(true);
				dateDebutProjet.setVisible(true);
				dateFinProjet.setVisible(true);
				textRechercher.setVisible(true);

				panelbas.add(new JScrollPane(tableListeProjets),
						BorderLayout.CENTER);
				validate();

			}
		});
		boutonModifier.setIcon(new javax.swing.ImageIcon("src/main/java/com/photos/modifier.gif")); // NOI18N
		boutonModifier.setToolTipText("Modifier");

		boutonImprimer.setIcon(new javax.swing.ImageIcon("src/main/java/com/photos/imprimer.gif")); // NOI18N
		boutonImprimer.setToolTipText("Imprimer");
		buttonAnnulers.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				// jLabel2.setVisible(true);
				panelbas.removeAll();
				boutonImprimer.setVisible(true);

				boutonModifier.setVisible(true);

				boutonRechercher.setVisible(true);

				boutonSupprimer.setVisible(true);
				boutonAjouter.setVisible(true);
				labelDateDebut.setVisible(true);
				labelDateFin.setVisible(true);
				dateDebutProjet.setVisible(true);
				dateFinProjet.setVisible(true);
				textRechercher.setVisible(true);

				panelbas.add(new JScrollPane(tableListeProjets),
						BorderLayout.CENTER);
				validate();

			}
		});

		boutonRechercher.setIcon(new javax.swing.ImageIcon("src/main/java/com/photos/recherchermod.png")); // NOI18N
		boutonRechercher.setToolTipText("Rechercher");
		/*boutonRechercher.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				testFindProjet();
				boutonAjouter.setVisible(false);
				boutonSupprimer.setVisible(false);
				boutonImprimer.setVisible(false);
				boutonRechercher.setVisible(false);
				boutonModifier.setVisible(false);
				textRechercher.setVisible(false);
				dateDebutProjet.setVisible(false);
				dateFinProjet.setVisible(false);
				labelDateDebut.setVisible(false);
				labelDateFin.setVisible(false);
			}
		});*/
				

		jLabel2.setFont(new java.awt.Font("Verdana", 3, 14)); // NOI18N

		panelhaut.add(jLabel1);

		jLabel2.setText("LISTE DES PROJETS");
		textRechercher.setPreferredSize(new Dimension(100, 27));
		textRechercher.setText("Référence");

		panelBouton1.add(boutonAjouter);
		panelBouton1.add(boutonSupprimer);
		panelBouton1.add(boutonModifier);

		panelBouton1.add(boutonImprimer);
		panelBouton1.add(boutonRechercher);
		panelBouton1.add(textRechercher);
		panelBouton1.add(labelDateDebut);
		panelBouton1.add(dateDebutProjet);
		panelBouton1.add(labelDateFin);
		panelBouton1.add(dateFinProjet);
		// panelBouton1.add(textLabel);
		// panelBouton1.add(jLabel2, BorderLayout.CENTER);
		panelBoutons.add(panelBouton1, BorderLayout.WEST);

		add(panelBoutons, java.awt.BorderLayout.CENTER);
		add(panelhaut, BorderLayout.NORTH);
		tableauListeProjets();// on fait appel à cette méthode pour le
								// chargement
								// du tableau
		panelbas.add(new JScrollPane(tableListeProjets), BorderLayout.CENTER);
		add(panelbas, BorderLayout.SOUTH);
	}

	public JPanel getFrame() {
		return this;
	}

	public JTextField getTextRechercher() {
		return textRechercher;
	}

	public void setTextRechercher(JTextField textRechercher) {
		this.textRechercher = textRechercher;
	}

	public JTable getTableListeProjets() {
		return tableListeProjets;
	}

	public void setTableListeProjets(JTable tableListeProjets) {
		this.tableListeProjets = tableListeProjets;
	}

	// methode qui permet de charger la liste des projets dans un JTable
	public void tableauListeProjets() {

		String[] entetes = { "Numero", "Referencee", "Etat", "Client",
				"Description" };

		List<Projets> listProjets = projetMetier.chargerAllProjets();
		int nombreLigne = listProjets.size();
		System.out.println("taille de la liste" + listProjets.size());
		Object data[][] = new Object[nombreLigne][5];

		// On parcoure la liste pour recuperer les projets et remplir le tableau
		// d'objet
		for (int i = 0; i < nombreLigne; i++) {
			Projets projets = new Projets();

			projets = listProjets.get(i);

			data[i][0] = projets.getProjetNum();

			data[i][1] = projets.getProjetRef();
			data[i][2] = projets.getProjetEtat();

			data[i][3] = projets.getProjetClient();

			data[i][4] = projets.getProjetDesc();
		}
		dtm = new DefaultTableModel(data, entetes);
		tableListeProjets = new JTable(dtm);

	}

	// methode pour la suppression d'un projet

	public void testDeleteProjet() {

		// on recupére le nombre de ligne selectionné pour la suppression

		final int[] selection = getTableListeProjets().getSelectedRows();
		System.out.println("voici la taille selectionné " + selection.length);
		// test pour voir si la selection est vide
		if (selection.length == 0) {
			JOptionPane.showMessageDialog(null,
					"veuillez selectionner un projet d'abord!!!!");

		} else {// si la selection n'est pas vide
			int taille = selection.length;

			for (int i = 0; i < taille; i++) {
				int index = selection[i];

				String projetReference = (String) getTableListeProjets()
						.getValueAt(index, 1);

				Projets projetSupprimer = projetMetier
						.findProjetByRefernce(projetReference);
				projetMetier.testDelete(projetSupprimer);
				dtm.removeRow(index);

			}

		}
	}

	// méthode pour le chargement des champs du projet à modifié dans un
	// formulaire

	public void chargeProjetSelection() {

		int ligneSelectionner = getTableListeProjets().getSelectedRow();
		if (ligneSelectionner == -1) {
			JOptionPane.showMessageDialog(null,
					"veuillez selectionner un projet d'abord!!!!");

		} else {
			ProjetMetier projetMetier = new ProjetMetier();
			Projets projetToModify = new Projets();
			String numeroRecuperer = (String) getTableListeProjets()
					.getValueAt(ligneSelectionner, 0);
			String referenceRecuperer = (String) getTableListeProjets()

			.getValueAt(ligneSelectionner, 1);
			String etat = (String) getTableListeProjets().getValueAt(
					ligneSelectionner, 2);

			String client = (String) getTableListeProjets().getValueAt(
					ligneSelectionner, 3);
			String desc = (String) getTableListeProjets().getValueAt(
					ligneSelectionner, 4);
			projetToModify = projetMetier
					.findProjetByRefernce(referenceRecuperer);
			Date dateDebutModify = projetToModify.getProjetDateDebut();

			Date dateEcheanceModify = projetToModify.getProjetDateEcheance();
			Date dateDeploiementModify = projetToModify
					.getProjetDateDepouillement();
			
			Date dateCreate = projetToModify.getProjetDateCreate();
			// on charge les données dans le panel

			ModifierProjets panModifierProjet = new ModifierProjets(
					buttonAnnulers);
			panModifierProjet.getTextNumero().setText(numeroRecuperer);
			panModifierProjet.getTextReference().setText(referenceRecuperer);
			panModifierProjet.getTextDescription().setText(desc);
			panModifierProjet.getTextNomClient().setText(client);
			panModifierProjet.getDateDebut().setDate(dateDebutModify);
			panModifierProjet.getDateDeploie().setDate(dateDeploiementModify);
			panModifierProjet.getDateEcheance().setDate(dateEcheanceModify);
			panModifierProjet.getDateCreate().setDate(dateCreate);
			panModifierProjet.setReferenceCorespondant(referenceRecuperer);

			panelbas.removeAll();
			boutonAjouter.setVisible(false);
			boutonSupprimer.setVisible(false);
			boutonImprimer.setVisible(false);
			//boutonRechercher.setVisible(false);
			boutonModifier.setVisible(false);
			textRechercher.setVisible(false);
			dateDebutProjet.setVisible(false);
			dateFinProjet.setVisible(false);
			labelDateDebut.setVisible(false);
			labelDateFin.setVisible(false);

			panelbas.add(panModifierProjet, BorderLayout.SOUTH);
			validate();

		}
	}



	// méthode pour la recherche d'un projet et afficher les informations en
	// fonction du la réference du projet

	public void testFindProjet() {
	
		ProjetMetier prjMetier = new ProjetMetier();
		Projets projetFined = new Projets();
      System.out.println("voici la reference   "+textRechercher.getText()) ;
		projetFined = prjMetier.findProjetByRefernce(textRechercher.getText());
		System.out.println("voici la reference du projet correspondant à la recherche"+textRechercher.getText());
		
		ModifierProjets panModif = new ModifierProjets(buttonAnnulers);
		panModif.getBontonValider().setVisible(false);
		buttonAnnulers.setText("RETOUR");

		panModif.getTextNumero().setText(projetFined.getProjetNum());
		panModif.getTextReference().setText(projetFined.getProjetRef());
		panModif.getTextDescription().setText(projetFined.getProjetDesc());
		panModif.getTextNomClient().setText(projetFined.getProjetClient());
		panModif.getDateCreate().setDate(projetFined.getProjetDateCreate());
		panModif.getDateDebut().setDate(projetFined.getProjetDateDebut());
		panModif.getDateDeploie().setDate(projetFined.getProjetDateDepouillement());
		panModif.getDateEcheance().setDate(projetFined.getProjetDateEcheance());
		panelbas.removeAll();
		panelbas.add(panModif, BorderLayout.SOUTH);
		validate();

	}

	public com.toedter.calendar.JDateChooser getDateDebutProjet() {
		return dateDebutProjet;
	}

	public void setDateDebutProjet(com.toedter.calendar.JDateChooser dateDebutProjet) {
		this.dateDebutProjet = dateDebutProjet;
	}

	public com.toedter.calendar.JDateChooser getDateFinProjet() {
		return dateFinProjet;
	}

	public void setDateFinProjet(com.toedter.calendar.JDateChooser dateFinProjet) {
		this.dateFinProjet = dateFinProjet;
	}

	public javax.swing.JPanel getPanelBoutons() {
		return panelBoutons;
	}

	public void setPanelBoutons(javax.swing.JPanel panelBoutons) {
		this.panelBoutons = panelBoutons;
	}


	public javax.swing.JPanel getPanelBouton1() {
		return panelBouton1;
	}

	public void setPanelBouton1(javax.swing.JPanel panelBouton1) {
		this.panelBouton1 = panelBouton1;
	}

	public javax.swing.JPanel getPanelbas() {
		return panelbas;
	}

	public void setPanelbas(javax.swing.JPanel panelbas) {
		this.panelbas = panelbas;
	}

	public javax.swing.JPanel getPanelhaut() {
		return panelhaut;
	}

	public void setPanelhaut(javax.swing.JPanel panelhaut) {
		this.panelhaut = panelhaut;
	}
	
	

}
